package com.huazi.www.frontdesk.service.impl;

import com.huazi.www.frontdesk.dao.impl.FrontdeskCardDaoImpl;
import com.huazi.www.frontdesk.javaBase.*;
import com.huazi.www.frontdesk.service.FrontdeskCardService;

import java.util.List;

/**
 * 业务层实现类
 */
public class FrontdeskCardServiceImpl implements FrontdeskCardService {
    FrontdeskCardDaoImpl frontdesk = new FrontdeskCardDaoImpl();

    /**
     * 用户注册
     *
     * @param password//密码
     * @param idCard//身份证号码
     * @param name//姓名
     * @param sex//性别
     * @param phone//电话
     * @param age//年龄
     * @return
     */
    @Override
    public Integer register(String password, String idCard, String name, String sex, String phone, Integer age) {
        Integer register = frontdesk.register(password, idCard, name, sex, phone, age);
        Integer i = null;
        if (register == 1) {
            i = frontdesk.id(idCard);
        }

        return i;
    }

    /**
     * 分页查询挂号表
     *
     * @param patientId//用户编号
     * @param currentPage//当前代码
     * @return
     */
    @Override
    public PageInfo<QueueInfo> pagequeue(Integer patientId, Integer currentPage) {
        //新建分页对象
        PageInfo<QueueInfo> pageInfo = new PageInfo<>();
        //设置每页的显示行数
        pageInfo.setPageSize(8);
        //设置当前页码
        pageInfo.setCurrentPage(currentPage);
        //获取总记录数调用dao层去查询
        Integer count = count(patientId);
        //设置总记录数
        pageInfo.setTotalCount(count);
        //根据当前页查出起始下标
        Integer star = (pageInfo.getCurrentPage() - 1) * pageInfo.getPageSize();
        //调用dao查询当前页的数据的集合
        List<QueueInfo> pagequeue = frontdesk.pagequeue(patientId, star, pageInfo.getPageSize());
        //存入分页对象
        pageInfo.setList(pagequeue);
        //将分页对象返回
        return pageInfo;
    }

    /**
     * 分页查询挂号表的总记录数
     *
     * @param patientId//用户编号
     * @return
     */
    @Override
    public Integer count(Integer patientId) {

        return frontdesk.count(patientId);
    }

    /**
     * 转诊
     *
     * @param xiangxi//科室
     * @param patientId//用户编号
     * @return
     */
    @Override
    public boolean transfer(String xiangxi, Integer patientId) {
        Integer transfer = frontdesk.transfer(xiangxi, patientId);
        if (transfer != 1) {
            return false;
        }
        return true;
    }

    /**
     * 查询科室
     *
     * @return
     */
    public List<DepartmentInfo> list() {
        return frontdesk.list();
    }

    /**
     * 分页查询用户表
     *
     * @param id//用户编号
     * @param currentPage//当前代码
     * @return
     */
    @Override
    public PageInfo<FrontdeskCardInfo> pagefrontdeskcard(Integer id, Integer currentPage) {
        //新建分页对象
        PageInfo<FrontdeskCardInfo> pageInfo = new PageInfo<>();
        //设置每页的显示行数
        pageInfo.setPageSize(8);
        //设置当前页码
        pageInfo.setCurrentPage(currentPage);
        //获取总记录数调用dao层去查询
        Integer count = countfrontdeskcard(id);
        //设置总记录数
        pageInfo.setTotalCount(count);
        //根据当前页查出起始下标
        Integer star = (pageInfo.getCurrentPage() - 1) * pageInfo.getPageSize();
        //调用dao查询当前页的数据的集合
        List<FrontdeskCardInfo> pagequeue = frontdesk.pagefrontdeskcard(id, star, pageInfo.getPageSize());
        //存入分页对象
        pageInfo.setList(pagequeue);
        //将分页对象返回
        return pageInfo;
    }

    /**
     * 分页查询用户表的总记录数
     *
     * @param id//用户编号
     * @return
     */
    @Override
    public Integer countfrontdeskcard(Integer id) {
        return frontdesk.countfrontdeskcard(id);
    }

    /**
     * 根据id查询用户表用户信息
     *
     * @param id//用户编号
     * @return
     */
    @Override
    public List<FrontdeskCardInfo> idqueue(Integer id) {

        return frontdesk.idqueue(id);
    }

    /**
     * 补卡
     *
     * @param id//卡号
     * @param password//密码
     * @param idCard//身份证号码
     * @param name//姓名
     * @param sex//性别
     * @param phone//电话号码
     * @param age//年龄
     * @param money//余额
     * @return
     */
    @Override
    public boolean frontdeskcardupdate(Integer id, String password, String idCard, String name, String sex, String phone, Integer age, Double money) {
        Integer frontdeskcardupdate = frontdesk.frontdeskcardupdate(id);
        if (frontdeskcardupdate != 1) {//判断是否先删除
            return false;
        } else {
            Integer reissueregister = frontdesk.reissueregister(password, idCard, name, sex, phone, age, money);
            if (reissueregister == 1) {
                return true;
            }
            return false;
        }
    }

    /**
     * //分页查询缴费记录表
     *
     * @param name//用户名
     * @param currentPage//当前页面
     * @return
     */
    @Override
    public PageInfo<ConsumeInfo> pageconsume(String name, Integer currentPage) {
        //新建分页对象
        PageInfo<ConsumeInfo> pageInfo = new PageInfo<>();
        //设置每页的显示行数
        pageInfo.setPageSize(8);
        //设置当前页码
        pageInfo.setCurrentPage(currentPage);
        //获取总记录数调用dao层去查询
        Integer count = frontdesk.consumecount(name);
        //设置总记录数
        pageInfo.setTotalCount(count);
        //根据当前页查出起始下标
        Integer star = (pageInfo.getCurrentPage() - 1) * pageInfo.getPageSize();
        //调用dao查询当前页的数据的集合
        List<ConsumeInfo> pagequeue = frontdesk.pageconsume(name, star, pageInfo.getPageSize());
        //存入分页对象
        pageInfo.setList(pagequeue);
        //将分页对象返回
        return pageInfo;
    }

    /**
     * //分页查询缴费记录表的总记录数
     *
     * @param name//用户名
     * @return
     */
    @Override
    public Integer consumecount(String name) {

        return frontdesk.consumecount(name);
    }

    /**
     * @param //用户id
     * @param money//充值金额
     * @return
     */
    @Override
    public boolean recharging(Integer id, Double money) {
        Integer recharging = frontdesk.recharging(id, money);
        if (recharging != 1) {
            return false;
        }
        return true;
    }

}
